//{ "allowAliases": "in-intersections" }
// primitives
type Foo = string & string[];

type Foo = `a-${number}` & `b-${number}`;

// reference types
interface Bar {}
class Baz implements Bar {}

type Foo = Bar & Baz;

type Foo = 'a' & 'b';

type Foo = 'a' & 'b' & 'c';

type Foo = 1 & 2;

type Foo = 1 & 2 & 3;

type Foo = `a-${number}` & `b-${number}`;

type Foo = `a-${number}` & `b-${number}` & `c-${number}`;

type Foo = true & false;

interface Bar {}
type Foo = Bar & string;

type Foo = string & string[];

type Foo = string & string[] & number;

